flex宇宙會有「外容器」container 及「內元件」items,以及軸線概念、對齊方法概念
Flex 外層屬性 (container)
- 實現Flex排版或內元件要有效果的關鍵:外容器加上
display: flex
\display: inline-flex
- 每個 HTML 標籤,能同時擁有內元件跟外容器身份
- 如果沒有做特定的設定,內部元件會依據外容器去做比例上的調整
- 每一個item預設相等高度
軸線 Axes
分成「主軸」main axis、「交錯軸」cross axis
主軸線 - 排排站依據 / 資訊動線的流向
— flex-flow 是 flex-direction及flex-wrap的縮寫屬性
flex-direction
- 決定主軸的方向 / 主軸方向決定Item排列方式和結果
- row (default) | row-reverse | column | column-reverse
flex-wrap
- 換行屬性,決定items 是否維持同一行
- Default value is 「nowrap」, items 自適應父容器於同一行
- flex-wrap: nowrap | wrap | wrap-reverse | initial | inherit;
1 | // 有六個子元素(每一個寬度一樣),而外容器假定寬應該只等於3個子元素 |
- The align-content property modifies the behavior of the flex-wrap property. It is similar to align-items, but instead of aligning flex items, it aligns flex lines.
- align-content 搭配 wrap、align-items 搭配 nowrap
justify-content
- items 在主軸線上排排站、對齊的方式
flex-start (default) | flex-end | center | space-between | space-around | space-evenly | initial | inherit;
space-between (平均分配,首尾items分別貼齊左右邊)
space-around ( items 間間距是左右兩邊兩倍)
space-evenly (間距一樣、IE11 不支援)
範例
交錯軸
永遠的都會跟主軸去做垂直交錯
align-items
- 交錯軸的對齊方式
- flex-start | center | flex-end | stretch (default) | baseline
align-self
屬性定義目前單一彈性項目如何對齊。這個設定會覆蓋 align-items 的預設值。- 在container 有設定高度的前提下,內元素以當前的交錯軸去決定如何對齊
align-content
- set how multiple lines are spaced apart from each other
- flex-start | center | flex-end | stretch (default) | space-between | space-around
- 在container 有設定高度的前提下,多行的內元素在外容器內,藉有彼此決定要怎麼排列
- 在只有單行下,書寫align-content是沒有用
進階屬性
Flex
This is the shorthand for flex-grow, flex-shrink and flex-basis combined
flex: flex-grow flex-shrink flex-basis;
flex-grow
- 預設為 0
- 用在當外容器還有剩餘空間時,內元素如何分配剩餘空間
flex-shrink
- 預設為 1
- 當單行內元素超過外容器時,items要如何縮小
- 文章一開頭時Key說: 如果沒有做特定的設定,內部元件會依據外容器去做比例上的調整
flex-basis
- flex-basis 預設值爲 auto
- defines the default size of an element before the remaining space is distributed.
- 當flex-direction: row, 決定寬度
- 當flex-direction: row, 決定高度
order
- order 則是針對子元素去設定它的排列順序
其他
巢狀: Flex 裡頭還可以包 Flex
水平垂直置中
1
2
3display: flex;
justify-content: center;
align-items: center常見UI工具 - Sketch、PS 、XD、figma
tools